AWS LambdaがPython3.6に対応したので使ってみた
こんにちは、LambdaとPythonが大好きな臼田です。
LambdaがPython3系に対応しました。
AWS Lambda Supports Python 3.6
早速使ってみましょう。
なお、macでのPython3.6環境の構築は下記を参照して下さい。
コンソールの状態
2017/04/19現在では下図のようになっています。
Pythonは既存の2.7に加えて3.6が選択できるようになっています。
選べるテンプレート(blue print)は6種類あります。
ただ、せっかくPython3.6に対応しているので、Python3.6で新しく実装された機能を利用してみようと思います。
Python3.6のスクリプト実装
使ってみる機能
Python3.6で新しく実装された機能の中に、f-stringというものがありました。
f-stringはstr.format()と同じような利用ケースで、str.format()よりも冗長的でない書き方が出来ます。
上記が参考になります。
作成したスクリプト
from datetime import datetime def lambda_handler(event, context): input_date = datetime.today() yukari = '田村ゆかり' birth = datetime(1976, 2, 27) month_17 = ((input_date.year - birth.year) - 17) * 12 + (input_date.month - birth.month) if input_date.day < birth.day: month_17 -= 1 print(f"{input_date.strftime('%Y年%m月%d日')}の{yukari}は17歳と{month_17}ヶ月")
これは田村ゆかりさんの年齢を確認して出力するスクリプトです。
私の好きなアーティストである田村ゆかりさんが今何歳なのかがわかります。
f-stringで直接関数の評価などを行っています。
下記のブログにインスパイアされました。
Python 3.6の新機能f-strings(フォーマット文字列リテラル)について
では実装してみましょう。
実装
ブランク関数からLambda関数を作成します。
トリガは必要ないのでそのまま次へ進みます。
名前を適当に、ランタイムはPython3.6を選択します。
上記のスクリプトをインラインで記載します。
その下のロールの設定は、任意で大丈夫ですが、今回はロールを「テンプレートから新しいロールを作成」として作成しています。ポリシーテンプレートは特に必要なポリシーもないので空欄で次へ進みます。
作成するLambdaの確認画面です。「関数の作成」へ進みます。
作成が完了しました。「テスト」を押します。
今回のスクリプトは入力値を無視するので、デフォルトのHello Worldのまま「保存してテスト」で実行します。
ログの表示から、f-stringが適切に評価されていることが確認できました。
これで、AWS LambdaでPython3.6のスクリプトが動作していることが確認できました。
おまけに田村ゆかりさんが17歳であることも確認できました。
最後に
Python コミュニティとしては PEP 373 でPython2.7のサポートを2020年までとしているようなので、少し先ですが終りが見えています。
今はPython3系を使われる方も非常に多いのではないでしょうか?
私はこれまでPython2系を利用してきましたが、これを機会にPython3系を勉強していこうと思います。